[iOS] JWTDecode.swiftを使ってJWTをデコードする
はじめに
こんばんは。モバイルアプリサービス部の平屋です。
本記事では、JWTDecode.swiftを使ってJWTをデコードする実装を紹介します。
検証環境
- macOS Mojave 10.14.4
- Xcode Version 10.1
- CocoaPods 1.6.1
導入
CocoaPodsやCarthageなどを使用して導入できます。
Cocoapods
use_frameworks! pod 'JWTDecode', '~> 2.2'
Carthage
github "auth0/JWTDecode.swift" ~> 2.2
実装
decode(jwt:)
メソッドを使用してJWTオブジェクトを取得し、JWTオブジェクトから必要な値を取り出します。
// JWT (https://jwt.io/に記載されているサンプル) let jwtText = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" // ヘッダー、ボディの値を取り出す guard let jwt = try? decode(jwt: jwtText), let algorithm = jwt.header["alg"], let type = jwt.header["typ"], let subject = jwt.body["sub"] as? String, let name = jwt.body["name"] as? String, let issuedAt = jwt.body["iat"] as? Int else { return } // ログ出力する print("[HEADER] algorithm:\(algorithm), type:\(type)") print("[PAYLOAD] subject:\(subject), name:\(name), issuedAt:\(issuedAt)")
動作確認
サンプルコードを実行すると、以下のログが得られました。
[HEADER] algorithm:HS256, type:JWT [PAYLOAD] subject:1234567890, name:John Doe, issuedAt:1516239022